#!/usr/bin/env python3
"""
数据库配置诊断脚本
用于验证数据库配置问题的根本原因
"""

import os
from aiquant.config.settings import settings

def diagnose_database_config():
    """诊断数据库配置问题"""
    print("🔍 AIQuant数据库配置诊断报告")
    print("=" * 60)
    
    # 1. 检查.env文件
    env_file_exists = os.path.exists('.env')
    print(f"📁 .env文件存在: {'✅' if env_file_exists else '❌'}")
    
    # 2. 检查当前数据库URL配置
    print(f"🔗 当前数据库URL: {settings.database_url}")
    print(f"🔗 当前时序数据库URL: {settings.timescale_url}")
    
    # 3. 分析URL中的用户名和密码
    db_url = settings.database_url
    if "username:password" in db_url:
        print("⚠️  发现问题：数据库URL使用默认占位符值")
        print("   - 用户名: 'username' (占位符)")
        print("   - 密码: 'password' (占位符)")
    
    # 4. 检查环境变量
    print("\n🌍 环境变量检查:")
    env_vars_to_check = [
        'DATABASE_URL',
        'TIMESCALE_URL', 
        'POSTGRES_USER',
        'POSTGRES_PASSWORD',
        'POSTGRES_DB',
        'POSTGRES_HOST',
        'POSTGRES_PORT'
    ]
    
    for var in env_vars_to_check:
        value = os.getenv(var)
        if value:
            # 隐藏敏感信息
            if 'password' in var.lower() or 'key' in var.lower():
                display_value = '*' * len(value)
            else:
                display_value = value
            print(f"   {var}: ✅ {display_value}")
        else:
            print(f"   {var}: ❌ 未设置")
    
    # 5. 提供解决方案建议
    print("\n💡 解决方案建议:")
    if not env_file_exists:
        print("1. 创建.env文件并配置数据库连接信息")
    
    if "username:password" in db_url:
        print("2. 替换默认占位符为实际的数据库凭据")
        print("3. 或者设置DATABASE_URL环境变量")
    
    print("\n📋 推荐的.env文件内容示例:")
    print("""
# 数据库配置
DATABASE_URL=postgresql+asyncpg://your_user:your_password@localhost:5432/aiquant
TIMESCALE_URL=postgresql+asyncpg://your_user:your_password@localhost:5432/aiquant_timeseries

# 或者分别配置
POSTGRES_USER=your_user
POSTGRES_PASSWORD=your_password
POSTGRES_DB=aiquant
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
""")

if __name__ == "__main__":
    diagnose_database_config()